Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix error message for match #2649

Merged
merged 8 commits into from
Dec 1, 2021
Merged

fix error message for match #2649

merged 8 commits into from
Dec 1, 2021

Conversation

JelleZijlstra
Copy link
Collaborator

Fixes #2648.

Haven't figured out how to test this yet.

@isidentical
Copy link
Collaborator

Humm, not sure if this is the perfect solution but how about this?

diff --git a/tests/data/pattern_matching_invalid.py b/tests/data/pattern_matching_invalid.py
new file mode 100644
index 0000000..22b5b94
--- /dev/null
+++ b/tests/data/pattern_matching_invalid.py
@@ -0,0 +1,18 @@
+# First match, no errors
+match something:
+    case bla():
+        pass
+
+# Problem on line 10
+match invalid_case:
+    case valid_case:
+        pass
+    case a := b:
+        pass
+    case valid_case:
+        pass
+
+# No problems either
+match something:
+    case bla():
+        pass
diff --git a/tests/test_format.py b/tests/test_format.py
index 8f8ffb3..f97d716 100644
--- a/tests/test_format.py
+++ b/tests/test_format.py
@@ -200,6 +200,15 @@ def test_python_310(filename: str) -> None:
     assert_format(source, expected, mode, minimum_version=(3, 10))
 
 
+def test_patma_invalid() -> None:
+    source, expected = read_data("pattern_matching_invalid")
+    mode = black.Mode(target_versions={black.TargetVersion.PY310})
+    with pytest.raises(black.parsing.InvalidInput) as exc_info:
+        assert_format(source, expected, mode, minimum_version=(3, 10))
+
+    exc_info.match("Cannot parse: 10:11")
+
+
 def test_docstring_no_string_normalization() -> None:
     """Like test_docstring but with string normalization off."""
     source, expected = read_data("docstring_no_string_normalization")

@JelleZijlstra
Copy link
Collaborator Author

Thanks, that's perfect!

Copy link
Collaborator

@isidentical isidentical left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool solution!

CHANGES.md Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

parser: correctly identify error location on soft-keywords
2 participants